package day02;

public class DataTypeCastDemo {
    public static void main(String[] args) {
        //转换两种方式：自动转换，强制转换
        /*
        int a=5;
        long b=a;//自动转换
        int c=(int)b;//强制转换

        //在自动转换两种特殊
        long d=5;  //自动转换
        double e=5;//自动转换
        System.out.println(e);//5.0   保留一位小数

        //强制转换两种特殊   溢出和丢精度
        long f=10000000000L;
        int g=(int) f;
        System.out.println(g);//1410065408   强制转换   溢出了    强转有可能发生溢出
        double q=25.987;
        int w=(int)q;
        System.out.println(w);//25   强制转换   强转有可能丢精度
        */
        /*转换两种方式：自动转换，强制转换
        * 自动转换：   由小到大转换  byte  short  int(char) long  float  double
        * 强制转换：   有大到小转换
        * int a=5; long b=a;   自动转换
        * long b=5; double e=5;   自动转换两种特殊
        *
        * 强制转换：
        * long c=5L; int d=(int)c; 强制转换
        * */
        //转换的两点规则：
        // 1.  byte,short,char   可以直接用整形直接量赋值，但不要超过范围
        byte a=5;  //byte范围：-128到127
        short c=5;
        char c1=5;

        // 2.  byte,short,char  在参与运算时，会先转换成int型在计算
        byte b1=5;
        byte b2=6;
        //byte b3=b1+b2;  //编译错误，会先将b1,b2转换成int型 在计算
        //byte b3=(byte)b1+b2;//编译错误，转换的优先级大于运算
        byte b3=(byte)(b1+b2);

        System.out.println(2+2);//4
        System.out.println('2'+'2');//100   '2'的码50+'2'的码50
        System.out.println(2+'2');//52   2+'2'的码50
        System.out.println('2');//2,   因为没有参与运算，所以输出的是2

    }
}
